package br.sddp.controle;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.sddp.dao.UsuarioDAO;
import br.sddp.modelo.Usuario;
import br.sddp.util.Criptografia;
import br.sddp.util.WebUtil;

@SessionScoped
@ManagedBean
public class UsuarioBean {

	private Usuario usuario;
	private List<Usuario> usuarios;	
	private String senhaAtual;
	private String novaSenha;
	private String confirmNovaSenha;	
	private List<Usuario> usuarioFiltrado;
	private Usuario novoUsuario = new Usuario();

	private List<String> perfil;	

	public void alterarSenha() {
		this.usuario = WebUtil.getUsuarioLogado();
		this.usuario.setSenha(Criptografia.encodePassword(this.novaSenha));
		alterarUsuario();
	}

	public void alterarUsuario() {
		UsuarioDAO usuarioDAO = new UsuarioDAO();
		String senha = this.usuario.getSenha();
		this.usuario.setSenha(Criptografia.encodePassword(senha));
		usuarioDAO.atualizar(this.usuario);
		WebUtil.enviarMsg("Atualizado com sucesso.");
	}

	public void excluirUsuario() {
		UsuarioDAO usuarioDAO = new UsuarioDAO();
		usuarioDAO.excluirUsuario(this.usuario);
	}

	public void cadastrar() {
		UsuarioDAO usuarioDAO = new UsuarioDAO();
		this.novoUsuario.setAtivo(true);
		usuarioDAO.cadastrar(this.novoUsuario);

		System.out.println("Nome:"+this.novoUsuario.getNome()+"\nLogin:"+this.novoUsuario.getLogin()+"\nSenha:"+this.novoUsuario.getSenha()+"\nPerfil:"+this.novoUsuario.getPerfil());

		WebUtil.enviarMsg("Adicionado com sucesso");
		WebUtil.redirecionar("adicionar-usuario.xhtml");
	}

	/*METODOS MODIFICADORES*/
	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public String getSenhaAtual() {
		return senhaAtual;
	}

	public void setSenhaAtual(String senhaAtual) {
		this.senhaAtual = senhaAtual;
	}

	public String getNovaSenha() {
		return novaSenha;
	}

	public void setNovaSenha(String novaSenha) {
		this.novaSenha = novaSenha;
	}

	public String getConfirmNovaSenha() {
		return confirmNovaSenha;
	}

	public void setConfirmNovaSenha(String confirmNovaSenha) {
		this.confirmNovaSenha = confirmNovaSenha;
	}

	/**
	 * Lista todos os usuarios.
	 * 
	 * @return
	 */
	public List<Usuario> getUsuarios() {		

		UsuarioDAO usuarioDAO = new UsuarioDAO();
		this.usuarios = usuarioDAO.listarUsuarios();
		return usuarios;
	}

	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}

	public List<Usuario> getUsuarioFiltrado() {
		return usuarioFiltrado;
	}

	public void setUsuarioFiltrado(List<Usuario> usuarioFiltrado) {
		this.usuarioFiltrado = usuarioFiltrado;
	}

	public Usuario getNovoUsuario() {
		return novoUsuario;
	}

	public void setNovoUsuario(Usuario novoUsuario) {
		this.novoUsuario = novoUsuario;
	}

	public List<String> getPerfil() {
		this.perfil.add("Administrador");
		this.perfil.add("Secretaria");
		this.perfil.add("Professor");
		return perfil;
	}

	public void setPerfil(List<String> perfil) {
		this.perfil = perfil;
	}
}
